// 引入 express
const express = require('express')
// 实例化
const app = express()
// bodyparser是用来解析post请求的中间件
const bodyparser = require('body-parser')

/**
 * 如果设置为false，那么对URL-encoded的数据的解析采用querystring库；querystring就是nodejs内建的对象之一，用来字符串化对象或解析字符串
 * 如果设置为true，那么采用qs库，允许将富对象和数组编码为url编码格式，允许使用url编码的json体验。有关更多信息，请参阅qs库。
 * 默认值为true，但是不赞成使用默认值。请研究qs和querystring之间的差异，选择合适的设置。
 * https://www.cnblogs.com/lianer/p/5178693.html?utm_source=tuicool&utm_medium=referral
 */
app.use(bodyparser.urlencoded({extended:false}))
// 添加json解析
app.use(bodyparser.json())


// 动态路由
app.get('/news/:newsid', function (req, res) {
    res.send('newsid:'+req.param('newsid'))
    console.log('newsid:'+req.param('newsid'))
    console.log('newsid:'+req.params.newsid)
})

// 普通方式
app.get('/goods/', function (req, res) {
    // res.send(req.query)
    res.send(req.query.id)
    console.log(req.query)

})

app.post('/', function (req, res) {
    res.send(req.body)
    console.log(req.body)
})


// get请求用 req.query.name 或 req.params.name 获取参数
// post请求用 req.body.name 获取参数

// 静态资源访问,比如一些css,可以让浏览器自动解析
// 如果访问的是http://localhost:3000/image/load.jpg,实际访问的路径就是 /public/image/load.jpg
// 其他静态资源访问同理
app.use(express.static('public'))

// 设置虚拟静态资源访问路径,即原来访问http://localhost:3000/image/load.jpg变成了http://localhost:3000/static/image/load.jpg
// 这样可以不暴露真实资源地址,提高安全性
app.use('/static', express.static('public'))

// 监听ip和端口
app.listen(8000, '127.0.0.1')
